# Version1

# main: main.cpp hello.cpp add.cpp
# 	clang++ -o main main.cpp hello.cpp add.cpp




# Version2

# CXX = clang++
# TARGET = main
# OBJ = main.o hello.o add.o

# $(TARGET): $(OBJ)
# 	$(CXX) -o $(TARGET) $(OBJ)

# main.o: main.cpp
# 	$(CXX) -c main.cpp

# hello.o: hello.cpp
# 	$(CXX) -c hello.cpp

# add.o: add.cpp
# 	$(CXX) -c add.cpp




# Version3

# CXX = clang++
# TARGET = main
# OBJ = main.o hello.o add.o

# CXXFLAGS = -c -Wall

# # $@是目标文件名
# # $^是所有依赖文件名
# $(TARGET): $(OBJ)
# 	$(CXX) -o $@ $^

# # %.o: %.cpp 表示所有.cpp文件都生成对应的.o文件
# # $<表示第一个依赖文件名
# %.o: %.cpp
# 	$(CXX) $(CXXFLAGS) $< -o $@

# .PHONY: clean
# clean:
# 	rm -f $(OBJ) $(TARGET)




# Version4

# CXX = clang++
# TARGET = main
# # wildcard函数可以匹配符合条件的文件名，这里匹配所有.cpp文件
# SRC = $(wildcard *.cpp)
# # patsubst函数可以替换符合条件的字符串，这里替换所有.cpp文件为.o文件
# OBJ = $(patsubst %.cpp, %.o, $(SRC))

# CXXFLAGS = -c -Wall

# $(TARGET): $(OBJ)
# 	$(CXX) -o $@ $^

# %.o: %.cpp
# 	$(CXX) $(CXXFLAGS) $< -o $@

# .PHONY: clean
# clean:
# 	rm -f $(OBJ) $(TARGET)
